﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>暂停 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 暂停 function pauses the script's current 线程." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>暂停</h1>

<p>暂停脚本的<a href="../misc/Threads.htm">当前线程</a>.</p>

<pre class="Syntax">
<span class="func">暂停</span> <span class="optional">NewState</span>
</pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>NewState</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a>或<a href="../Concepts.htm#strings">字符串</a></p>
    <p>如果为空或省略, 暂停<a href="../misc/Threads.htm">当前线程</a>. 否则, 请指定以下值之一:</p>
    <p><code>1</code> 或 <code>True</code>: 将当前线程下面的线程标记为暂停, 然后进入暂停状态, 这样当它恢复时, 它将完成正在运行的函数(如果有). 如果当前线程下面没有线程, 脚本本身就会被暂停, 这将阻止<a href="SetTimer.htm">计时器</a>运行(这个效果与在脚本没有线程时使用菜单项 &quot;暂停 Script&quot; 的效果是一样的).</p>
    <p><code>0</code> 或 <code>False</code>: 取消底层线程的暂停.</p>
    <p><code>-1</code>: 切换底层线程的暂停状态.</p>
  </dd>

</dl>

<h2 id="Remarks">备注</h2>
<p><a href="../Variables.htm#IsPaused">内_是否暂停</a> 包含了底层线程的暂停状态.</p>
<p>默认情况下, 脚本也可以通过它的<a href="../Program.htm#tray-icon">托盘图标</a>或<a href="../Program.htm#main-window">主窗口</a>来暂停.</p>
<p>与 <a href="Suspend.htm">挂起</a> 禁用<a href="../Hotkeys.htm">热键</a>和<a href="../Hotstrings.htm">热字串</a>不同, 开启暂停状态会冻结线程(如果省略了 <em>NewState</em>, 冻结<a href="../misc/Threads.htm">当前线程</a>, 否则是底层线程). 副作用是, 在它下面的任何被中断线程也将处于睡眠状态.</p>
<p>暂停任意线程后, <a href="SetTimer.htm">计时器</a>不会运行. 与之相比, 显式启动的线程(如 <a href="../Hotkeys.htm">热键</a>和<a href="../objects/Menu.htm">菜单项</a>) 仍然可以运行; 但当它们的<a href="../misc/Threads.htm">线程</a>结束时, 底层线程仍会被暂停. 换句话说, 每个线程都能独立于其他线程被暂停.</p>
<p>使用默认的图标时, 每当脚本的<a href="../misc/Threads.htm">当前线程</a>处于暂停状态时, 托盘图标的颜色会从绿色变成红色. 可以通过冻结图标阻止这个图标颜色的改变, 这是通过为 设置托盘图标 的最后一个参数指定 1 来实现. 例如:</p>
<pre><a href="TraySetIcon.htm">设置托盘图标</a> ,, 1</pre>
<p>要禁用<a href="SetTimer.htm">计时器</a>而不暂停脚本, 请使用 <a href="Thread.htm">线程 "NoTimers"</a>.</p>
<p>当脚本显示任意类型的<a href="../objects/Menu.htm">菜单</a>(托盘菜单, 菜单栏, 界面 上下文菜单, 等) 时, 脚本总是处于停顿状态(虽然不是正式地暂停).</p>

<h2 id="Related">相关</h2>
<p><a href="Suspend.htm">挂起</a>, <a href="../objects/Menu.htm">Menu 对象</a>, <a href="ExitApp.htm">退出应用</a>, <a href="../misc/Threads.htm">线程</a>, <a href="SetTimer.htm">设置定时器</a></p>

<h2 id="Examples">示例</h2>
<div class="ex" id="ExHalt">
<p><a href="#ExHalt">#1</a>: 使用 暂停 来停止脚本, 比如检查变量.</p>
<pre>变量列表
暂停
退出应用 <em>; 这一行将不会被执行, 直到用户取消暂停脚本为止.</em></pre>
</div>

<div class="ex" id="ExHotkey">
<p><a href="#ExHotkey">#2</a>: 按一次热键可暂停脚本. 再按一次即可取消暂停.</p>
<pre>暂停::暂停 -1  <em>; Pause/Break 键.</em>
#p::暂停 -1  <em>; Win+P</em></pre>
</div>

<div class="ex" id="ExPostMessage">
<p><a href="#ExPostMessage">#3</a>: 发送 暂停 函数到另一个脚本.</p>
<pre>检测隐藏窗口 True
WM_COMMAND := 0x111
ID_FILE_PAUSE := 65403
<a href="PostMessage.htm">投递消息</a> WM_COMMAND, ID_FILE_PAUSE,,, "C:\YourScript.ahk ahk_class AutoHotkey"</pre>
</div>

</body>
</html>